<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】下面代码使用delete运算符删除对象a的属性x。
var a ={					// 定义对象a
   x : 1, 					// 定义对象成员
   y : 2					// 定义对象成员
};
alert(a.x); 				// 返回1，调用对象成员
delete a.x; 				// 删除对象成员x
alert(a.x); 				// 返回undefined，没有找到该对象成员

var a ={					// 定义对象a
   x : 1,
   y : 2
};
alert(delete a.x); 			// 返回true，说明删除成功
//【示例2】不是所有对象成员或变量都可以被删除的，如某些内置对象的预定义成员和客户端对象成员，使用var语句声明的变量也是不允许删除的。
a = 1; 							// 初始化变量a，没有使用var语句声明
alert(delete a); 				// 返回true，说明删除成功
var b = 1; 						// 使用var语句声明并初始化变量
alert(delete b); 				// 返回false，说明不允许删除
alert(delete Object.constructor); 
	// 返回true，说明部分内部成员可以被删除
alert(delete Object.valueOf());
	// 返回错误，说明某些内部成员不可以被删除
//【示例3】如果删除不存在的对象成员，或者非对象成员、数组元素、变量时，它会返回true，所以使用delete运算符时，应该注意这个问题，防止与成功删除操作相混淆。
var a ={					// 定义对象a
   x : 1,
   y : 2
};
alert(delete a); 			// 返回false，说明不允许删除
alert(delete a.z); 			// 返回true，说明不存在该属性
alert(delete Object); 		// 返回true，说明删除的不是成员、元素或变量
alert(delete b); 			// 返回true，说明不存在该变量

var a ={					// 定义对象a
   x : 1
};
var b ={					// 定义对象b
   y : a
};
alert(delete(b.y)); 		// 删除对象b中y属性对对象a的引用

var a =[];					// 定义空数组a
if("x" in a) 				// 如果数组a中存在元素x
    delete a["x"];			// 则删除元素x
else						// 如果不存在元素x
    a["x"] = true; 			// 则插入数组元素x，并为其赋值true
alert(a.x); 				// 返回true。查看数组元素x的值
if(delete a["x"])			// 如果删除数组元素x成功
    a["x"] = false; 		// 更新数组元素x的值为false
alert(a.x); 				// 返回false。查看数组元素x的值

</script>
</head>
<body>




</body>
</html>
